package com.example.core.testDemo.DTO;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @描述 会员表
 * @类名 memberDTO
 * @日期 2019/9/19
 * @时间 8:42
 * @Getter //为字段创建getter方法
 * @Setter //为字段创建setter
 * @EqualsAndHashCode //实现equals()和hashCode()
 * @ToString //实现toString()
 * @Data //使用上面四个注解的特征
 * @Cleanup //关闭流
 * @Synchronized //对象上同步
 * @SneakyThrows //抛出异常
 * @NoArgsConstructor //注解在类上；为类提供一个无参的构造方法
 * @AllArgsConstructor //注解在类上；为类提供一个全参的构造方法
 * @Data //注解在类上；提供类所有属性的 getting 和 setting 方法，此外还提供了equals、canEqual、hashCode、toString 方法
 * @Setter //可用在类或属性上；为属性提供 setting 方法
 * @Getter //可用在类或属性上；为属性提供 getting 方法
 * @authorzhangzhaoyang
 */
@Getter
@Setter
@ToString
public class MemberDTO {
    //    自增长主键

    private Integer id;

    //名称
    @NotEmpty(message = "名称不能为空")
    private String name;

    //密码
    @NotEmpty(message = "密码不能为空")
    private String password;

    //年龄
    private Integer age;

    //    手机号
    private String phone;

    //    关联id
    private Integer userid;


    @NotNull(message = "ID不能为空")
    @Range(min = 1, max = 100, message = "ID必须在1到100之间")
    private Integer ids;

    @NotBlank(message = "姓名不能为空")
    @Length(min = 2, max = 6, message = "姓名必须在2到6位之间")
    private String names;

    @NotNull(message = "余额不能为空")
    @DecimalMax(value = "30.50", message = "余额不能超过30.5")
    @DecimalMin(value = "1.50", message = "余额不能低于1.5")
    private BigDecimal amount;

    @NotNull(message = "生日不能为空")
    @Past(message = "生日必须是过去")
    private Date birthday;

    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String email;

    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = "手机号格式错误")
    private String phones;






}
